import org.junit.Test;
import junit.framework.TestCase;

public class TesteAluno extends TestCase {
	Aluno aluno;

	public void setUp() throws Exception {
		aluno = new Aluno("Joao", "123", "Computacao");
	}

	public void testConstrutorAluno() throws Exception {
		Aluno aluno1 = new Aluno("Marcos");
		assertEquals("construtor 1", "Marcos", aluno1.getNome());
		
		Aluno aluno2 = new Aluno("Antonio", "222");
		assertEquals("construtor 2 nome", "Antonio", aluno2.getNome());
		assertEquals("construtor 2 matricula", "222", aluno2.getMatricula());
		
		try {
			Aluno aluno3 = new Aluno("1Joao");
			Aluno aluno4 = new Aluno("Jo1ao");
			Aluno aluno5 = new Aluno("Joao1");
			fail("Esperava-se uma excecao de nome invalido");
		} catch (Exception e) {
			assertEquals("Nome invalido", "Nome nao pode conter numeros", e.getMessage());
		}
		try {
			Aluno aluno6 = new Aluno("");
			fail("Esperava-se uma excecao de nome vazio");
		} catch (Exception e) {
			assertEquals("Nome vazio", "Nome nao pode ser vazio", e.getMessage());
		}
		try {
			Aluno aluno7 = new Aluno(null);
			fail("Esperava-se uma excecao de nome nulo");
		} catch (Exception e) {
			assertEquals("Nome nulo", "Nome nao pode ser nulo", e.getMessage());
		}
		
		aluno = null;
	}
	
	public void testGetNome() {
		assertEquals("get nome com erro", "Joao", aluno.getNome());
		aluno = null;
	}
	
	public void testSetNome() {
		aluno.setNome("Jose");
		assertEquals("set nome com erro", "Jose", aluno.getNome());
		aluno = null;
	}

	public void testGetMatricula() {
		assertEquals("get matricula com erro", "123", aluno.getMatricula());
		aluno = null;
	}
	
	public void testSetMatricula() {
		aluno.setMatricula("000");
		assertEquals("set matricula com erro", "000", aluno.getMatricula());
		aluno = null;
	}
	
	public void testGetCurso() {
		assertEquals("get curso com erro", "Computacao", aluno.getCurso());
		aluno = null;
	}
	
	public void testSetCurso() {
		aluno.setCurso("Fisica");
		assertEquals("set curso com erro", "Fisica", aluno.getCurso());
		aluno = null;
	}
	
	@Test
	public void testGetStatus() {
		assertEquals("get Status com erro", true, aluno.getStatus());
		aluno = null;
	}
	
	@Test
	public void testSetStatus() {
		aluno.setStatus(false);
		assertEquals("set Status com erro", false, aluno.getStatus());
		aluno = null;
	}
}
